package com.lyf.scm.plan.insfrastructure.db.mapper;

import com.lyf.scm.plan.api.dto.SalePlanDirectlyDifferinInfoDTO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.SalesPlanSelectDO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.bigdata.DirectlyDifferinInDO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.bigdata.DirectlyDifferinUpDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 直营预测计划_目标与销售计划差异
 *
 * @author wangchlei
 * @date 2020/08/05
 */
public interface SalePlanDirectlyDifferinMapper {
    /**
     * 列表数据
     *
     * @param salesPlanSelectDO
     * @return {@link List<SalePlanDirectlyDifferinInfoDTO>}
     **/
    List<SalePlanDirectlyDifferinInfoDTO> listByCycles(SalesPlanSelectDO salesPlanSelectDO);

    /**
     * 图表数据
     *
     * @param salesPlanSelectDO
     * @return {@link List<Map<Object>>}
     **/
    List<SalePlanDirectlyDifferinInfoDTO> listEChartsDataByCycles(SalesPlanSelectDO salesPlanSelectDO);

    /**
     * 大数据取数据接口（门店+日期）
     *
     * @param storeCode
     * @param startDate
     * @param endDate
     * @return {@link List<DirectlyDifferinUpDO>}
     **/
    List<DirectlyDifferinUpDO> listUpByStoreAndDate(@Param("storeCode") String storeCode, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 大数据批量新增
     *
     * @param directlyDifferinInDOs
     * @return void
     **/
    void batchInsert(List<DirectlyDifferinInDO> directlyDifferinInDOs);

    void batchDeleteByStartDate(@Param("storeCode") String storeCode, @Param("startDate") Date startDate);

    void rmByIds(List<Long> ids);

    void upByIds(List<DirectlyDifferinUpDO> list);

    /**
     * 删除对应标识的数据
     *
     * @param opSign
     */
    void delete(@Param("opSign") String opSign);

    void deleteByOpSign(String opSign);
}
